package com.kkb.projectauth.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kkb.projectauth.dao.UserDao;
import com.kkb.projectauth.dao.UserLoginRegisterDao;
import com.kkb.projectauth.dto.UserRegisterParam;
import com.kkb.projectauth.pojo.User;
import com.kkb.projectauth.pojo.UserLoginRegister;
import com.kkb.projectauth.service.UserLoginRegisterService;
import com.kkb.projectcommon.api.CommonResult;
import org.apache.tomcat.util.security.MD5Encoder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.sql.Wrapper;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 初心
 * @date 2021/4/14 16:32
 */

@Service
public class UserLoginRegisterServiceImpl implements UserLoginRegisterService {

    @Autowired(required = false)
    UserLoginRegisterDao userLoginRegisterDao;

    @Autowired
    private UserDao userDao;

    /**
     * 通过用户ID查找用户的个人信息
     * @param id
     * @return
     */
    @Override
    public String login(String username, String password) {
        String token = "null";
        //TODO 需要删掉下一行代码
        token = "null";
        Long id ;
        UserLoginRegister userLoginRegister = new UserLoginRegister();

        userLoginRegister.setUpdateTime(new Date());
        try{
            //按username查找
            QueryWrapper<UserLoginRegister> wrapper = new QueryWrapper<>();
            wrapper.eq("username",username);
            UserLoginRegister  example = userLoginRegisterDao.selectOne(wrapper);
            id = example.getId();
            //MD5解密：（测试用 ----> ）
            String dncodePassword = DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8));
//            System.out.println("userinputpassword : " + example.getPassword());
//            System.out.println("dncodePassword : " + dncodePassword);
            //TODO 验证密码
            if (dncodePassword.equals(example.getPassword())) {
                userLoginRegister.setId(id);
//                return token;
            } else {
                return null;
            }
            if(example.getIsDeleted()==1){
                //账号禁用
            }
            //TODO 生成token

        }catch (Exception e){
            e.printStackTrace();
        }
        userLoginRegisterDao.updateById(userLoginRegister);
        return token;
    }

    /**
     * 通过用户ID查找用户的个人信息
     * @param id
     * @return
     */
    @Override
    public String loginByCode(String phone, String smsCode) {
        return null;
    }


    /**
     * 通过用户ID查找用户的个人信息
     * @param id
     * @return
     */
    @Override
    public UserLoginRegister register(String phone,String password) {
        // 查询到相同用户,返回null
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("phone", phone);
        UserLoginRegister userLoginRegister1 = userLoginRegisterDao.selectOne(queryWrapper);
        return userLoginRegister1;
    }

    @Override
    public int insertUser(String phone, String password) {
        UserLoginRegister userLoginRegister = new UserLoginRegister();
        userLoginRegister.setPhone(phone);
        userLoginRegister.setUsername(phone);
        // TODO 密码加密
        //  zzw temp add :
        String encodePassword = DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8));
        userLoginRegister.setPassword(encodePassword);
        userLoginRegister.setCreateTime(new Date());
        userLoginRegister.setUpdateTime(new Date());
        userLoginRegister.setIsDeleted((byte) 0);
        // 添加用户
        int insert = userLoginRegisterDao.insert(userLoginRegister);
        return insert;
    }

//    @Override
//    public UserLoginRegister register(String username, String password) {
//        UserLoginRegister register = new UserLoginRegister();
//        register.setUsername(username);
//        register.setPhone(username);
//        register.setCreateTime(new Date());
//        register.setIsDeleted((byte) 0);
//        register.setUpdateTime(new Date());
//        //查询到相同用户,返回null
//        //TODO findUserByUsername(register.getUsername())
//        UserLoginRegister register1 = userLoginRegisterDao.findByUsername(username);
//        if(register1 != null){
//            return null;
//        }
//
//        //TODO 密码加密
//        // zzw add :
//        String encodePassword = DigestUtils.md5DigestAsHex(password.getBytes(StandardCharsets.UTF_8));
//        register.setPassword(encodePassword);
//        //String encodePassword = passwordEncoder.encode(password)
//        //register.setPassword(encodePassword);
//        //添加用户
//        userLoginRegisterDao.insert(register);
//        return register;
//    }


}
